在线学习纠错系统

摘要:

如今升入高中,面对日益繁重的课业负担,制作一个错题本已经变得越来越有必要,但是因为如同书海一般的作业,每天坚持整理错题已经变成了一种奢望,所以我就想到能不能做一款学习纠错的app。

这个项目旨在能解决传统手工记错中存在的效率低、精确度低、费时耗力、难以坚持的弱点,利用网络微数据库,实现现代化、无纸化的错题整理,让人容易养成每日整理错题的好习惯 ,可以同时对各个科目进行整理,也可以随时随地对错题进行重做与反思。

其中的创新点有:

1.无论题目多少都可以一键查看错题。

2.可以在任意场合随时对错题进行重做与反思。

3.效率高,精确度高,省力省时

4.操作方便,仅需一部手机即可实现。

目 录

序言…….......................................................3

§1.1 选题由来……………………………………………………..3

§1.2 开发流程……………………………………………………..3

§1.3 开发环境……………………………………………………..3

§1.4功能介绍………………………………………………………...3

核心代码………………………………………………….4

§2.1出题系统………………………………………………………….4

§2.2错题管理系统………………………………………………….8

§2.3错题输入系统………………………………………………….11

§2.4做题系统…………………………………………………………14.

结论与展望……………………………………………..24

参考文献…………………………………………………………………..24

第一章 序言

§1.1选题由来

如今升入高中,面对日益繁重的课业负担,在同学与老师的推荐下,我一直想制作一个错题本,可是每次制作都是半途而废,每每看到自己做到一半却又弃置的错题本,心中总有一种说不出的滋味,所以我就希望能够自己制作一款软件,帮助自己养成每天整理错题的好习惯。

虽然有老师的指导,但是在最关键的编程的过程中,仍然是困难重重,为了管理我的错题,需要用到微数据库,技术性的难题阻挡了我前进的脚步,为此,我研读了《人人都能开发安卓APP——App Inventor 2运用实战》、《可视化开发Android应用程序——拼图开发模式App Inventor2》、《App Inventor 2中文版开发实战:Android智能应用开发前传》等文献进行学习,再经过自己的不断调试,我成功在新浪的SAE的Python的环境下搭建了一个网络微数据库。

§1.2开发流程

1.调查大家的实际需求

2.查阅相关书籍解决技术问题

3.编写程序

§1.3开发环境

开发网站:app.gzjkw.net

开发软件:App Inventor 2

§1.4功能介绍

可以将错题以特定格式的Excel输入存入手机中

可以在任意场合随时对错题进行重做与反思。

无论多少错题都可以一键查看

第二章 核心代码

§2.1出题系统

本项目自己建立了网络微数据库,在新浪SAE的Python环境下搭建。首先在数据库中新建数据表test,字段名tag,类型为varchar(255),字段名vaule,类型为longtext。

变量表

图2

图1

图1 变量模块

图3

图二 用户界面

图4

图5

如果选择注册,则输入新出题者昵称,如果选择登陆,则输入已有出题者账号

图6

如果注册,则出题者账号等于昵称加随机码,保证账号唯一性,防止网络数据库因相同标签而覆盖储存值。接着输入新账号的密码,。如果登陆,则输入已有出题者账号。

图7

如果注册,则打开网络微数据库的数据表test,关闭屏幕并打开对应的错题管理页面,如果登陆,则查询出题者的密码是否正确。

图8

获取已有出题者的密码,它在tag为出题者对应记录的value是列表的第一项,如果查询密码等于刚输入的密码,则关闭屏幕,打开出题者对应的试卷管理页面。

用户界面

§2.2错题管理系统

变量表

图9

变量模块

图10

出题者赋值为Screen1的传值,标题显示出题者信息,查询出题者对应的试卷列表。

图11

试卷列表记录出题者的密码及所出的所有试卷名称,试卷列表第1项是出题者密码,因此从第二项开始,将试卷列表的试卷名称赋值到局部变量列表中,列表显示框显示列表内容。

图12

如果试卷名称不为空,则在试卷第二项处插入新增试卷名称,第一项仍为出题者密码,在网络微数据库中建立空试卷,即内容为“暂无试题”,标签命名为出题者加试卷名称,表明该试卷是哪个出题者所有。将试卷列表保存在网络微数据库,覆盖原有数据。

图13

当数据储存完毕,马上进行数值查询,验证网络微数据库是否储存成功,结果将在列表显示框中显示。

图14

选择试卷

图15

图16

退出错题管理

图17

用户界面

§2.3错题输入系统

变量表

图18

变量模块

图19

出题者赋值为Screen2传值的第一项,试卷编号赋值为Screen2传值的第二项再加1,试卷名称赋值为Screen2传值的第三项。标题显示试卷名称,查询试卷,获取试题信息。

图20

每次刷新列表显示框前先清空试题列表,试卷内容第一项是字段名,从第二项起获取试题信息,将每道试题的第一项(题号)及第二项(问题),合并文本添加

试题列表中,最后用列表显示框显示试题列表

图21

如果试题列表为空,则读取文件,试题列表不为空则询问是否覆盖原试卷内容。

图22

将CSV文本转换为列表,赋值给试卷内容,试卷内容保存到网络微数据库中,标签命名为出题者加试卷名称,表明该试卷是哪位出题者所有。

图23

当数据存储完毕,马上进行数值查询,验证网络微数据库是否存储成功,结果将在列表显示框中显示

图24

若选择导入试题,则覆盖原试卷内容。若选择删除试卷,则将原试卷内容储存为“试题已删”,存储值仍为列表格式。删除试卷后,则获取出题者所出试卷列表,从中确定删除的试卷名称清除。

图25

删除试卷

图26

先获取出题者原有的试卷内容,将试卷编号对应的试卷名称从试卷列表中删除,将新的试卷列表保存到出题者网络微数据库。

图27

如果试卷删除成功,则关闭屏幕,打开出题者对应的Screen2

图28

当列表显示框选择完成,根据出题者、试卷名称及试题编号打开对应的“试题详情”页面

图29

当手机“返回”键被点击,关闭屏幕并返回Screen2

图30

用户界面

§2.4做题系统

主要组件

图31

变量模块

变量表

图32

试卷题量赋值为试卷内容的长度,如果是空试卷则调用“无试题”过程,如果试卷不空,则调用“初始化答案列表”过程,显示对应试题详情,并检查题号是否达到边界。

图33

只显示“无试题”,隐藏其他内容,提交状态设为true,表示可以退出答题。

图34

试卷内容第一项是字段名,第二项起才是试题列表,获取试题内容,生成正确答案列表,最后初始化我的答案列表,每项为空。

图35

试题内容赋值为试卷内容中指定题号的全部内容并显示题型、分值、题号及问题

图36

如果图片路径不为空,则显示画布,画布背景图片为图片路径,否则隐藏画布

图37

如果题型是单选题,则显示选择题布局及选择题按钮布局,否则隐藏

图38

如果题型是填空题,则显示填空题布局,否则隐藏。最后赋值本题“我的答案”与“正确答案

图39

定义过程“检查”,检查试题编号是否达到边界,从而控制“上一题”及“下一题”按钮的启用与否

图40

如果没有达到左边边界,则显示上一题,如果没有达到右边边界,则显示下一题

图41

选择题提交答案

图42

填空题提交答案

图43

图44

交卷并显示成绩

结论与展望

经过长时间的开发和修改,我已完善至多个版本,并且还可以不断改进。我给同学们使用了这款APP,老师也表示这款软件对于整理错题十分方便,同学表示这款APP中的功能新颖,十分有用。以后的生活中发现各种小问题时他们都会提出,我则再通过编写新的功能继续完善这款软件。在以后的开发中,我还会继续改进,并将数据库的使用更完善达到最好的效果。

参考文献

【1】黄仁祥,金琦, 易伟. 人人都能开发安卓APP——App Inventor 2运用实战[M]. 机械工业出版社, 第1版,2014,100-105.

【2】王向辉,张国印,沈洁编著. 可视化开发Android应用程序——拼图开发模式App Inventor2[M].清华大学出版社, 第2版,2015.

【3】王寅峰. App Inventor 2中文版开发实战:Android智能应用开发前传[M].电子工业出版社, 第1版 ,2015.

【4】伦纳德理查德森 (Leonard Richardson) (作者), 麦克阿蒙森 (Mike Amundsen) (作者), 赵震一 (注译, 译者), 李哲 (注译, 译者). RESTful Web APIs中文版[M].电子工业出版社, 第1版,2014.

变量名 类型 初始值 功能
出题者 字符串 出题者账号
密码 字符串 出题者密码
操作 字符串 出题者操作是注册还是登陆
变量名 类型 初始值 功能
出题者 字符串 出题者账号
试卷列表 列表 出题者所出的试卷列表
变量名 类型 功能
出题者 字符串 出题者账号
试卷列表 列表 出题者所出的试卷列表
试卷编号 整型 试卷列表中的编号
试卷名称 字符串 试卷名称
试卷内容 列表 包含字段名的试卷列表
试题列表 列表 不含字段名的试卷列表
操作 字符串 出题者操作是导入试题还是删除试卷
类型 名称 重要初始属性 功能
标签 题型 文本:题型 显示题型
标签 分值 文本:分值 显示分值
标签 题目 文本:题目 显示题目
画布 画布 高度:150像素
宽度:200像素 显示图片
垂直布局 选择题布局 宽度:充满 显示各选项
标签 A选项 文本:A 显示A选项
标签 B选项 文本:B 显示B选项
标签 C选项 文本:C 显示C选项
标签 D选项 文本:D 显示D选项
标签 正确答案 文本:正确答案
显示状态:false 显示正确答案
标签 我的答案 文本:我的答案 显示我的答案
水平布局 填空题布局 宽度:充满 填空题答题模块
输入框 填空题答案 提示:请输入答案 输入填空题答案
按钮 填空题确定 文本:确定 提交填空题答案
水平布局 选择题按钮布局 宽度:充满 选择题答题模块
按钮 按钮A 文本:A 提交A选项
按钮 按钮B 文本:B 提交B选项
按钮 按钮C 文本:C 提交C选项
按钮 按钮D 文本:D 提交D选项
水平布局 翻页布局 宽度:充满 翻页和交卷
按钮 上一题 文本:上一题 显示上一题
按钮 下一题 文本:下一题 显示下一题
按钮 交卷 文本:交卷 提交试卷
对话框 交卷对话框 与做题者交互
对话框 退出对话框 与做题者交互
网络微数据库 网络微数据库 服务地址:1.lzbd.sinaapp.com 保存试卷信息
变量名 类型 初始值 功能
出题者 字符串 出题者账号
试卷名称 字符串 试卷名称
试卷内容 列表 包含字段名的试题列表
试卷题量 整型 0 试卷的总题量
试卷编号 整型 0 试卷中试题的编号
试卷内容 列表 试题的详细信息
题型 字符串 根据题型显示选择题或填空题答题模块
我的答案列表 列表 第一项 为“我的答案” 记录做题者的答案
正确答案列表 列表 第一项为“正确答案” 记录正确答案
得分 整型 0 答题得分
提交状态 布尔型 False 根据提交状态确定是否能退出答题